c++ - 从 C++ 类制作 Visual C++ DLL
全部标签 我正在编写一个低级记录器函数,它将文本字符串附加到文本(日志)文件的末尾。要求是此函数不应调用来自DLL的任何WinAPI,这些DLL可能尚不可用于该进程——例如当它从DllMain调用时处理程序。换句话说,它不能使用除了保证加载到任何用户模式进程中的库之外的任何库,即kernel32.dll或ntdll.dll.我可以通过CreateFile、WriteFile、CloseHandle、HeapAlloc、HeapFree等均来自kernel32.dll。问题在于格式化输出字符串。例如,我需要添加一些额外的(自动生成的)详细信息,例如当前时间、进程ID、sessionID等。我通常会
我希望文本像时钟一样随着时间的变化而变化,但是它并没有改变。我发现当我最小化或最大化窗口时,文本会发生变化。我想我应该重绘窗口,但我是WindowsAPI的新手,有什么好的建议吗?这是main.cpp代码:LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow){//....}voidPaint(HWNDhwnd,LPCTSTRtxt){UpdateWindow(hwnd);HD
如何使用Qt为窗口的主窗口小部件制作阴影? 最佳答案 应用程序通常不会创建阴影,这取决于窗口管理器。你可以通过各种邪恶的技巧来伪造它,比如创建另一个无边框的窗口,它是阴影颜色,然后把它放在你的主窗口下面。 关于windows-Qt:如何给主窗口小部件制作阴影?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/262380/
我有一个由进程加载和文件锁定的dll,我想用更新的版本更新它。我正在寻找一种替代方法来终止进程以在更新dll之前释放文件锁。现有的事件进程仍然使用旧版本是可以的,只要新实例化的进程采用新逻辑即可。似乎我可以简单地重命名/移动dll,并且实时进程似乎仍然运行良好。这样做安全吗?如果dll的代码已经加载到进程中,为什么还需要锁定dll? 最佳答案 移动任何随机应用程序使用的所有dll并不总是可以的。某些应用程序,如asp.net,使用影子副本概念,它们实际复制dll并使用副本让您可以自由修改原始文件。在asp.net的情况下,如果您修改
如何为windows制作python模块安装程序?我有python(2.7,如果有区别的话)模块,它包装了C-lib的功能,并想制作一个带有构建库的安装程序,以使安装变得容易。 最佳答案 使用distutils,你可以编写一个安装文件来编译你的库并安装它们http://docs.python.org/library/distutils.htmlhttp://docs.python.org/distutils/index.html#distutils-index请参阅此示例setup.py,它还为不同平台编译“c”库。http://c
我正在为我的网络制作一个安全程序。其中一个实例是检查和监控调用了哪些api和库。执行此操作的dll和与之配套的程序已经完成。但是有一个问题我似乎无法解决。当尝试使用NtCreateThreadEx将我的dll注入(inject)系统进程(例如explorer.exe,我的主要测试系统进程)时,我得到了返回值:C0000022,这意味着:Status_Access_Denied(返回NTSTATUS,但DWORD可以)我不知道该怎么做,我以管理员身份运行,我提升了我的权限,并使用了正确的功能,但我仍然得到c0000022这是我用来注入(inject)的代码#include"main.h"
我有一个程序(不是我的,没有源代码),它公开了一个接口(interface),因此我可以编写一个DLL,它将被我的程序调用。现在我想知道当我在我创建的这个DLL中声明一些变量时,它将存储在什么内存空间中?我的意思是,它只会位于EXE地址空间的内存空间中,对吗?但是,关于EXE的DLL是如何加载的?我认为一个DLL只在内存中加载过一次,那么这与我在我的DLL中创建局部变量有什么关系呢?(如对象、类等) 最佳答案 DLL每个进程加载一次。曾几何时,DLL在进程之间共享,但自从Windows3.1走上渡渡鸟之路以来,情况就不同了。您在DL
我已经编写了一个DLL来帮助我调试我的应用程序。我正在运行64位版本的windows7。这是我观察到的:(1)如果我设置HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLs并运行我的应用程序的32位版本,DLL被加载并且一切正常。(2)如果我设置HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Windows\AppInit_DLLs并运行我的应用程序的64位版本,应用程序启
我有一个连接到Oracle数据库的perl脚本,打开一个文本文件并从数据库表中的文件加载数据,该脚本在我的开发机器(windowsxp32位)上运行完美,但是当我加载脚本到生产服务器(Windows200364位)并从命令行运行它,它会打开一个perl.exe-无法定位组件窗口,消息说ThisapplicationhasfailedtostartbecauseOCI.dllwasnotfound.Re-installingtheapplicationmayfixthisproblem.命令行输出为:install_driver(Oracle)failed:Can'tload'C:/Pe
我是Linux的长期用户和“高级”Python程序员。我最近在周末有一些空闲时间,我开始学习C++。我正在使用QtCreator进行开发,因为它具有很好的功能,而且简单、快速,我还计划在未来编写Qt应用程序,所以如果我已经习惯了QtCreator这样的东西,它会很简单.我喜欢自动完成、体面的代码突出显示、视觉调试辅助等功能,以及这些现代功能,只要它们不妨碍我。但是,很多人告诉我,如果我真的喜欢这些功能,我应该使用VisualC++和VisualAssist(一种插件)。一个friend带着他的带有VisualStudio的笔记本来这里,我的第一印象是它太复杂了,屏幕上有成千上万的菜单和